home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 681 / term / source.lha / TransferPanel.c < prev    next >
C/C++ Source or Header  |  1992-05-09  |  14KB  |  621 lines

  1. /*
  2. **    $Id: TransferPanel.c,v 1.8 92/05/01 12:51:55 olsen Sta Locker: olsen $
  3. **    $Revision: 1.8 $
  4. **    $Date: 92/05/01 12:51:55 $
  5. **
  6. **    File transfer control panel support routines
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. struct TwoStrings
  15. {
  16.     STRPTR    Left,
  17.         Right;
  18. };
  19.  
  20. STATIC struct TwoStrings *TransferStrings;
  21.  
  22. STATIC struct Gadget    *GadgetList;
  23. STATIC BYTE         LastStatus = -1;
  24.  
  25. STATIC WORD         PositionX = -1,
  26.              PositionY = -1;
  27.  
  28. STATIC UBYTE         LineOffsets[] = {  0, 8,16, 0,30,38,46,54, 0,67,75 };
  29.  
  30. STATIC struct IBox     TransferBox = { -1, -1, -1, -1 };
  31.  
  32. #define WIDTH        564
  33. #define HEIGHT        198
  34.  
  35. #define ORIGIN_X    10
  36. #define ORIGIN_Y    (14+50)
  37.  
  38. STATIC struct Gadget *
  39. CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  40. {
  41.     struct Gadget        *Gadget;
  42.     struct NewGadget     NewGadget;
  43.     UWORD             Counter = 0;
  44.  
  45.     memset(&NewGadget,0,sizeof(struct NewGadget));
  46.  
  47.     if(Gadget = CreateContext(GadgetList))
  48.     {
  49.         NewGadget . ng_TextAttr        = &DefaultFont;
  50.         NewGadget . ng_VisualInfo    = VisualInfo;
  51.         NewGadget . ng_Width        = (WIDTH - 30) >> 1;
  52.         NewGadget . ng_Height        = 12;
  53.         NewGadget . ng_GadgetText    = LocaleString(MSG_TRANSFERPANEL_ABORT_ENTIRE_TRANSFER_GAD);
  54.         NewGadget . ng_GadgetID        = Counter;
  55.         NewGadget . ng_Flags        = 0;
  56.         NewGadget . ng_LeftEdge        = 10;
  57.         NewGadget . ng_TopEdge        = HEIGHT - 3 - NewGadget . ng_Height;
  58.  
  59.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  60.             GT_Underscore,    '_',
  61.         TAG_DONE);
  62.  
  63.         NewGadget . ng_GadgetText    = LocaleString(MSG_TRANSFERPANEL_SKIP_CURRENT_FILE_GAD);
  64.         NewGadget . ng_GadgetID        = Counter;
  65.         NewGadget . ng_LeftEdge        = WIDTH - 10 - NewGadget . ng_Width;
  66.  
  67.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  68.             GT_Underscore,    '_',
  69.         TAG_DONE);
  70.  
  71.         NewGadget . ng_Height        = 12;
  72.         NewGadget . ng_GadgetText    = LocaleString(MSG_TRANSFERPANEL_DATA_TRANSFERRED_GAD);
  73.         NewGadget . ng_GadgetID        = Counter;
  74.         NewGadget . ng_Flags        = PLACETEXT_ABOVE;
  75.         NewGadget . ng_LeftEdge        = 10;
  76.         NewGadget . ng_TopEdge        = HEIGHT - 3 - NewGadget . ng_Height - 16;
  77.  
  78.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  79.             GTTX_Border,    TRUE,
  80.         TAG_DONE);
  81.  
  82.         NewGadget . ng_GadgetText    = LocaleString(MSG_TRANSFERPANEL_TIME_TO_GO_GAD);
  83.         NewGadget . ng_GadgetID        = Counter;
  84.         NewGadget . ng_LeftEdge        = WIDTH - 10 - NewGadget . ng_Width;
  85.  
  86.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  87.             GTTX_Border,    TRUE,
  88.         TAG_DONE);
  89.  
  90.         NewGadget . ng_GadgetText    = LocaleString(MSG_TRANSFERPANEL_PROTOCOL_GAD);
  91.         NewGadget . ng_GadgetID        = Counter;
  92.         NewGadget . ng_TopEdge        = 1 + TopEdge;
  93.         NewGadget . ng_LeftEdge        = 10 + 88 + 64;
  94.         NewGadget . ng_Height        = 12;
  95.         NewGadget . ng_Width        = WIDTH - 20 - 88 - 64;
  96.         NewGadget . ng_Flags        = PLACETEXT_LEFT;
  97.  
  98.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  99.             GTTX_Text,    LocaleString(MSG_GLOBAL_UNKNOWN_TXT),
  100.             GTTX_Border,    TRUE,
  101.         TAG_DONE);
  102.  
  103.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_MESSAGE_TXT);
  104.         NewGadget . ng_GadgetID        = Counter;
  105.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 2;
  106.  
  107.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  108.             GTTX_Text,    LocaleString(MSG_TRANSFERPANEL_NO_MESSAGE_TXT),
  109.             GTTX_Border,    TRUE,
  110.         TAG_DONE);
  111.  
  112.         NewGadget . ng_GadgetText    = LocaleString(MSG_TRANSFERPANEL_ERROR_LIST_GAD);
  113.         NewGadget . ng_GadgetID        = Counter;
  114.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 2;
  115.         NewGadget . ng_Height        = 20;
  116.  
  117.         GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
  118.             GT_Underscore,    '_',
  119.             GTLV_ReadOnly,    TRUE,
  120.         TAG_DONE);
  121.     }
  122.  
  123.     return(Gadget);
  124. }
  125.  
  126. VOID __stdargs
  127. TransferInfo(WORD X,WORD Y,BYTE *String,...)
  128. {
  129.     if(String && TransferWindow)
  130.     {
  131.         va_list    VarArgs;
  132.         WORD    Len;
  133.  
  134.         va_start(VarArgs,String);
  135.         VSPrintf(SharedBuffer,String,VarArgs);
  136.         va_end(VarArgs);
  137.  
  138.         if(!strncmp(String,"%10ld ",6))
  139.         {
  140.             strcat(SharedBuffer,"                                   ");
  141.  
  142.             SharedBuffer[47] = 0;
  143.  
  144.             Len = 47;
  145.         }
  146.         else
  147.         {
  148.             if(!Stricmp(String,"%ld") || !Stricmp(String,"%10ld") || !Stricmp(String,"`%lc'"))
  149.             {
  150.                 strcat(SharedBuffer,"              ");
  151.  
  152.                 SharedBuffer[11] = 0;
  153.  
  154.                 Len = 11;
  155.             }
  156.             else
  157.                 Len = 50;
  158.         }
  159.  
  160.         Move(TransferWindow -> RPort,ORIGIN_X + 4 + X * 8,ORIGIN_Y + 6 + LineOffsets[Y]);
  161.         Text(TransferWindow -> RPort,SharedBuffer,strlen(SharedBuffer));
  162.  
  163.         if(X == 19)
  164.         {
  165.             if(TransferStrings[Y] . Left)
  166.                 strcpy(TransferStrings[Y] . Left,SharedBuffer);
  167.             else
  168.             {
  169.                 if(TransferStrings[Y] . Left = AllocVec(Len + 1,MEMF_ANY))
  170.                     strcpy(TransferStrings[Y] . Left,SharedBuffer);
  171.             }
  172.         }
  173.         else
  174.         {
  175.             if(TransferStrings[Y] . Right)
  176.                 strcpy(TransferStrings[Y] . Right,SharedBuffer);
  177.             else
  178.             {
  179.                 if(TransferStrings[Y] . Right = AllocVec(Len + 1,MEMF_ANY))
  180.                     strcpy(TransferStrings[Y] . Right,SharedBuffer);
  181.             }
  182.         }
  183.     }
  184. }
  185.  
  186. STATIC VOID __stdargs
  187. TransferText(WORD Y,UBYTE *String,...)
  188. {
  189.     va_list    VarArgs;
  190.  
  191.     va_start(VarArgs,String);
  192.     VSPrintf(SharedBuffer,String,VarArgs);
  193.     va_end(VarArgs);
  194.  
  195.     Move(TransferWindow -> RPort,ORIGIN_X,ORIGIN_Y + 6 + LineOffsets[Y]);
  196.     Text(TransferWindow -> RPort,SharedBuffer,strlen(SharedBuffer));
  197. }
  198.  
  199. VOID
  200. GhostStats(struct Gadget *Gadget)
  201. {
  202.     STATIC ULONG __chip     Check = 0x5555AAAA;
  203.     struct RastPort        *RPort = TransferWindow -> RPort;
  204.     BYTE             FgPen = RPort -> FgPen;
  205.  
  206.     if(Config . DisableBlinking & TERMINAL_FASTER)
  207.     {
  208.         switch(Config . ColourMode)
  209.         {
  210.             case COLOUR_EIGHT:    SetAPen(RPort,7);
  211.                         break;
  212.  
  213.             case COLOUR_SIXTEEN:    SetAPen(RPort,15);
  214.                         break;
  215.  
  216.             default:        SetAPen(RPort,1);
  217.                         break;
  218.         }
  219.     }
  220.     else
  221.     {
  222.         switch(Config . ColourMode)
  223.         {
  224.             case COLOUR_EIGHT:    SetAPen(RPort,4);
  225.                         break;
  226.  
  227.             case COLOUR_SIXTEEN:    SetAPen(RPort,8);
  228.                         break;
  229.  
  230.             default:        SetAPen(RPort,1);
  231.                         break;
  232.         }
  233.     }
  234.  
  235.     SetAfPt(RPort,(UWORD *)&Check,1);
  236.  
  237.     RectFill(RPort,Gadget -> LeftEdge + 2,Gadget -> TopEdge + 1,Gadget -> LeftEdge + Gadget -> Width - 3,Gadget -> TopEdge + Gadget -> Height - 2);
  238.  
  239.     SetAPen(RPort,FgPen);
  240.  
  241.     SetAfPt(RPort,NULL,0);
  242. }
  243.  
  244. VOID
  245. ShowStats(struct Gadget *Gadget,LONG Value,LONG Max)
  246. {
  247.     if(TransferWindow)
  248.     {
  249.         struct RastPort    *RPort = TransferWindow -> RPort;
  250.         LONG         MaxWidth = Gadget -> Width - 4,Width;
  251.  
  252.         if(Max < 1)
  253.             Max = 0;
  254.  
  255.         if(Value > Max)
  256.             Value = Max;
  257.  
  258.         if((Width = (MaxWidth * Value) / Max) > 0)
  259.         {
  260.             BYTE FgPen = RPort -> FgPen;
  261.  
  262.             if(Width != MaxWidth)
  263.             {
  264.                 SetAPen(RPort,0);
  265.  
  266.                 RectFill(RPort,Gadget -> LeftEdge + 2 + Width - 1,Gadget -> TopEdge + 1,Gadget -> LeftEdge + Gadget -> Width - 3,Gadget -> TopEdge + Gadget -> Height - 2);
  267.             }
  268.  
  269.             if(Config . DisableBlinking & TERMINAL_FASTER)
  270.             {
  271.                 switch(Config . ColourMode)
  272.                 {
  273.                     case COLOUR_EIGHT:    SetAPen(RPort,7);
  274.                                 break;
  275.  
  276.                     case COLOUR_SIXTEEN:    SetAPen(RPort,15);
  277.                                 break;
  278.  
  279.                     default:        SetAPen(RPort,1);
  280.                                 break;
  281.                 }
  282.             }
  283.             else
  284.             {
  285.                 switch(Config . ColourMode)
  286.                 {
  287.                     case COLOUR_EIGHT:    SetAPen(RPort,6);
  288.                                 break;
  289.  
  290.                     case COLOUR_SIXTEEN:    SetAPen(RPort,7);
  291.                                 break;
  292.  
  293.                     default:        SetAPen(RPort,3);
  294.                                 break;
  295.                 }
  296.             }
  297.  
  298.             RectFill(RPort,Gadget -> LeftEdge + 2,Gadget -> TopEdge + 1,Gadget -> LeftEdge + Width + 1,Gadget -> TopEdge + Gadget -> Height - 2);
  299.  
  300.             SetAPen(RPort,FgPen);
  301.         }
  302.         else
  303.         {
  304.             BYTE FgPen = RPort -> FgPen;
  305.  
  306.             SetAPen(RPort,0);
  307.  
  308.             RectFill(RPort,Gadget -> LeftEdge + 2,Gadget -> TopEdge + 1,Gadget -> LeftEdge + Gadget -> Width - 3,Gadget -> TopEdge + Gadget -> Height - 2);
  309.  
  310.             SetAPen(RPort,FgPen);
  311.         }
  312.     }
  313. }
  314.  
  315. VOID __stdargs
  316. ShowString(struct Gadget *Gadget,UBYTE *String,...)
  317. {
  318.     if(TransferWindow)
  319.     {
  320.         va_list         VarArgs;
  321.         WORD         Len;
  322.         struct RastPort    *RPort = TransferWindow -> RPort;
  323.  
  324.         va_start(VarArgs,String);
  325.         VSPrintf(SharedBuffer,String,VarArgs);
  326.         va_end(VarArgs);
  327.  
  328.         Len = strlen(SharedBuffer);
  329.  
  330.         Move(RPort,Gadget -> LeftEdge + 2 + (Gadget -> Width - 4 - 8 * Len) / 2,Gadget -> TopEdge + 1 + (Gadget -> Height - 2 - 8) / 2 + 6);
  331.  
  332.         if(Config . ColourMode != COLOUR_MONO && !(Config . DisableBlinking & TERMINAL_FASTER))
  333.         {
  334.             BYTE FgPen = RPort -> FgPen,DrawMode = RPort -> DrawMode;
  335.  
  336.             switch(Config . ColourMode)
  337.             {
  338.                 case COLOUR_AMIGA:    SetAPen(RPort,2);
  339.                             break;
  340.  
  341.                 case COLOUR_EIGHT:    SetAPen(RPort,7);
  342.                             break;
  343.  
  344.                 case COLOUR_SIXTEEN:    SetAPen(RPort,15);
  345.                             break;
  346.             }
  347.  
  348.             SetDrMd(RPort,JAM1);
  349.  
  350.             Text(RPort,SharedBuffer,Len);
  351.  
  352.             SetAPen(RPort,FgPen);
  353.             SetDrMd(RPort,DrawMode);
  354.         }
  355.         else
  356.             Text(RPort,SharedBuffer,Len);
  357.     }
  358. }
  359.  
  360. VOID __stdargs
  361. AddTransferInfo(UBYTE *Message,...)
  362. {
  363.     struct Node *Node;
  364.  
  365.     if(Node = AllocVec(sizeof(struct Node) + strlen(Message) + 51,MEMF_ANY|MEMF_CLEAR))
  366.     {
  367.         va_list VarArgs;
  368.  
  369.         Node -> ln_Name = (UBYTE *)(Node + 1);
  370.  
  371.         va_start(VarArgs,Message);
  372.         VSPrintf(Node -> ln_Name,Message,VarArgs);
  373.         va_end(VarArgs);
  374.  
  375.         GT_SetGadgetAttrs(TransferGadgetArray[6],TransferWindow,NULL,
  376.             GTLV_Labels,    ~0,
  377.         TAG_DONE);
  378.  
  379.         AddHead(&TransferInfoList,Node);
  380.  
  381.         GT_SetGadgetAttrs(TransferGadgetArray[6],TransferWindow,NULL,
  382.             GTLV_Labels,    &TransferInfoList,
  383.         TAG_DONE);
  384.     }
  385. }
  386.  
  387. VOID
  388. RefreshTransferWindow()
  389. {
  390.     WORD i;
  391.  
  392.     DrawBevelBox(TransferWindow -> RPort,162, 62,392,28,
  393.         GTBB_Recessed,    TRUE,
  394.         GT_VisualInfo,    VisualInfo,
  395.     TAG_DONE);
  396.  
  397.     DrawBevelBox(TransferWindow -> RPort,162, 92,112,35,
  398.         GTBB_Recessed,    TRUE,
  399.         GT_VisualInfo,    VisualInfo,
  400.     TAG_DONE);
  401.  
  402.     DrawBevelBox(TransferWindow -> RPort,162,129,112,20,
  403.         GTBB_Recessed,    TRUE,
  404.         GT_VisualInfo,    VisualInfo,
  405.     TAG_DONE);
  406.  
  407.     DrawBevelBox(TransferWindow -> RPort,441, 92,112,35,
  408.         GTBB_Recessed,    TRUE,
  409.         GT_VisualInfo,    VisualInfo,
  410.     TAG_DONE);
  411.  
  412.     DrawBevelBox(TransferWindow -> RPort,441,129,112,20,
  413.         GTBB_Recessed,    TRUE,
  414.         GT_VisualInfo,    VisualInfo,
  415.     TAG_DONE);
  416.  
  417.     switch(Config . ColourMode)
  418.     {
  419.         case COLOUR_EIGHT:    SetAPen(TransferWindow -> RPort,7);
  420.                     break;
  421.  
  422.         case COLOUR_SIXTEEN:    SetAPen(TransferWindow -> RPort,15);
  423.                     break;
  424.  
  425.         default:        SetAPen(TransferWindow -> RPort,1);
  426.                     break;
  427.     }
  428.  
  429.     SetDrMd(TransferWindow -> RPort,JAM1);
  430.  
  431.     TransferText( 0,LocaleString(MSG_TRANSFERPANEL_FILE_TXT));
  432.     TransferText( 1,LocaleString(MSG_TRANSFERPANEL_FILE_SIZE_TXT));
  433.     TransferText( 2,LocaleString(MSG_TRANSFERPANEL_SPACE_LEFT_TXT));
  434.  
  435.     TransferText( 4,LocaleString(MSG_TRANSFERPANEL_BYTES_TRANSFERRED_CHARACTERS_PER_SECOND_TXT));
  436.     TransferText( 5,LocaleString(MSG_TRANSFERPANEL_BLOCKS_TRANSFERRED_CHARACTER_DELAY_TXT));
  437.     TransferText( 6,LocaleString(MSG_TRANSFERPANEL_BLOCK_SIZE_PACKET_DELAY_TXT));
  438.     TransferText( 7,LocaleString(MSG_TRANSFERPANEL_BLOCK_CHECK_TYPE_PACKET_TYPE_TXT));
  439.  
  440.     TransferText( 9,LocaleString(MSG_TRANSFERPANEL_ESTIMATED_TIME_NUMBER_OF_ERRORS_TXT));
  441.     TransferText(10,LocaleString(MSG_TRANSFERPANEL_ELAPSED_TIME_NUMBER_OF_TIMEOUTS_TXT));
  442.  
  443.     SetBPen(TransferWindow -> RPort,0);
  444.     SetDrMd(TransferWindow -> RPort,JAM2);
  445.  
  446.     GT_RefreshWindow(TransferWindow,NULL);
  447.  
  448.     GhostStats(TransferGadgetArray[2]);
  449.     GhostStats(TransferGadgetArray[3]);
  450.  
  451.     for(i = 0 ; i < 11 ; i++)
  452.     {
  453.         if(TransferStrings[i] . Left)
  454.         {
  455.             Move(TransferWindow -> RPort,ORIGIN_X + 4 + 19 * 8,ORIGIN_Y + 6 + LineOffsets[i]);
  456.             Text(TransferWindow -> RPort,TransferStrings[i] . Left,strlen(TransferStrings[i] . Left));
  457.         }
  458.  
  459.         if(TransferStrings[i] . Right)
  460.         {
  461.             Move(TransferWindow -> RPort,ORIGIN_X + 4 + 54 * 8,ORIGIN_Y + 6 + LineOffsets[i]);
  462.             Text(TransferWindow -> RPort,TransferStrings[i] . Right,strlen(TransferStrings[i] . Right));
  463.         }
  464.     }
  465. }
  466.  
  467. BYTE
  468. TransferPanel(UBYTE *Title)
  469. {
  470.     if(TransferWindow)
  471.         return(TRUE);
  472.     else
  473.     {
  474.         if(Status != STATUS_DOWNLOAD && Status != STATUS_UPLOAD)
  475.         {
  476.             LastStatus = Status;
  477.  
  478.             Status = STATUS_DOWNLOAD;
  479.         }
  480.         else
  481.             LastStatus = -1;
  482.  
  483.         if(TransferStrings = (struct TwoStrings *)AllocVec(sizeof(struct TwoStrings) * 11,MEMF_ANY | MEMF_CLEAR))
  484.         {
  485.             if(CreateAllGadgets(&TransferGadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  486.             {
  487.                 if(PositionX == -1)
  488.                 {
  489.                     PositionX = (Screen -> Width - WIDTH) >> 1;
  490.                     PositionY = (Screen -> Height - HEIGHT) >> 1;
  491.     
  492.                     TransferBox . Width    = WIDTH;
  493.                     TransferBox . Height    = 11;
  494.                 }
  495.     
  496.                 TransferBox . Left    = PositionX;
  497.                 TransferBox . Top    = PositionY;
  498.     
  499.                 if(TransferWindow = OpenWindowTags(NULL,
  500.                     WA_Width,        WIDTH,
  501.                     WA_Height,        HEIGHT,
  502.     
  503.                     WA_Left,        PositionX,
  504.                     WA_Top,            PositionY,
  505.     
  506.                     WA_Activate,        TRUE,
  507.                     WA_DragBar,        TRUE,
  508.                     WA_DepthGadget,        TRUE,
  509.                     WA_CloseGadget,        TRUE,
  510.                     WA_RMBTrap,        TRUE,
  511.                     WA_NoCareRefresh,    TRUE,
  512.                     WA_SmartRefresh,    TRUE,
  513.                     WA_Zoom,        &TransferBox,
  514.     
  515.                     WA_CustomScreen,    Screen,
  516.     
  517.                     WA_IDCMP,        IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | IDCMP_NEWSIZE | BUTTONIDCMP | LISTVIEWIDCMP | TEXTIDCMP,
  518.     
  519.                     WA_Title,        Title,
  520.                 TAG_DONE))
  521.                 {
  522.                     PushWindow(TransferWindow);
  523.     
  524.                     AddGList(TransferWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  525.                     RefreshGList(GadgetList,TransferWindow,NULL,(UWORD)-1);
  526.     
  527.                     RefreshTransferWindow();
  528.     
  529.                     TransferInfo(19, 0,"-");
  530.                     TransferInfo(19, 1,"-");
  531.                     TransferInfo(19, 2,"-");
  532.     
  533.                     TransferInfo(19, 4,"-");
  534.                     TransferInfo(54, 4,"-");
  535.                     TransferInfo(19, 5,"-");
  536.                     TransferInfo(54, 5,"-");
  537.                     TransferInfo(19, 6,"-");
  538.                     TransferInfo(54, 6,"-");
  539.                     TransferInfo(19, 7,"-");
  540.                     TransferInfo(54, 7,"-");
  541.     
  542.                     TransferInfo(19, 9,"-");
  543.                     TransferInfo(54, 9,"-");
  544.                     TransferInfo(19,10,"-");
  545.                     TransferInfo(54,10,"-");
  546.     
  547.                     return(TRUE);
  548.                 }
  549.             }
  550.         }
  551.  
  552.         return(FALSE);
  553.     }
  554. }
  555.  
  556. VOID
  557. DeleteTransferPanel()
  558. {
  559.     if(FileMatch)
  560.         MatchEnd(FileAnchor);
  561.  
  562.     if(LastStatus != -1)
  563.         Status = LastStatus;
  564.  
  565.     LastStatus = -1;
  566.  
  567.     if(TransferWindow)
  568.     {
  569.         PositionX = TransferWindow -> LeftEdge;
  570.         PositionY = TransferWindow -> TopEdge;
  571.  
  572.         if(GadgetList)
  573.             RemoveGList(TransferWindow,GadgetList,(UWORD)-1);
  574.  
  575.         PopWindow();
  576.  
  577.         CloseWindow(TransferWindow);
  578.  
  579.         TransferWindow = NULL;
  580.     }
  581.  
  582.     if(GadgetList)
  583.     {
  584.         FreeGadgets(GadgetList);
  585.  
  586.         GadgetList = NULL;
  587.     }
  588.  
  589.     if(TransferInfoList . lh_Head -> ln_Succ)
  590.     {
  591.         struct Node *Node = TransferInfoList . lh_Head,*NextNode;
  592.  
  593.         while(NextNode = Node -> ln_Succ)
  594.         {
  595.             Remove(Node);
  596.  
  597.             FreeVec(Node);
  598.  
  599.             Node = NextNode;
  600.         }
  601.     }
  602.  
  603.     if(TransferStrings)
  604.     {
  605.         WORD i;
  606.  
  607.         for(i = 0 ; i < 11 ; i++)
  608.         {
  609.             if(TransferStrings[i] . Left)
  610.                 FreeVec(TransferStrings[i] . Left);
  611.  
  612.             if(TransferStrings[i] . Right)
  613.                 FreeVec(TransferStrings[i] . Right);
  614.         }
  615.  
  616.         FreeVec(TransferStrings);
  617.  
  618.         TransferStrings = NULL;
  619.     }
  620. }
  621.